PHP >= 5.1 x horário de verão brasileiro

O horário de verão no Brasil sempre deu dor de cabeça aos administradores de sistemas Linux. Depois da divulgação da ferramenta zic, juntamente com a data de início e a data final do horário de verão nacional a coisa ficou mais fácil de ser controlada. Agora, surgiu um problema com o PHP >= 5.1.

[ Hits: 12.401 ]

Por: Marlichsi, o Mxyzptlk em 01/11/2007


Configurando e solucionando o problema.



A configuração do servidor que resolvi corrigir o problema possui Fedora Core 5 com PHP 5.1 e Apache 2.2 instalados.

Vasculhando maiores informações, descobri que o pacote com a atualização do timezone atual pertencia ao PECL, e este pode ser instalado através do comando abaixo.

# pecl install timezonedb

Com isso, o PECL faz o download, compilação e instalação do pacote necessário, preparando a extensão para ser utilizada pelo PHP. Simples assim.

Porém ele faz a instalação da extensão em um diretório diferente da configuração que o PHP está esperando, que é:

/usr/lib/php/modules (esse diretório é a minha configuração default do PHP)

Ele coloca essa extensão em:

/usr/local/lib/php/extensions/no-debug-non-zts-20050922

O que você tem que fazer é copiar o arquivo timezonedb.so do diretório onde o PECL instalou para o diretório que o PHP está aguardando que estejam todas suas extensões.

Feito isso, você precisa dizer ao PHP para utilizar essa extensão.

Edite o arquivo de configuração do PHP (/etc/php.ini) e adicione a linha extension=timezonedb.so na seção Dynamic Extensions.

Vai ficar algo mais ou menos assim:

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example:
;
; extension=msql.so
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.

;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
extension=mysql.so
extension=timezonedb.so

Com essa configuração feita no seu PHP, salve o arquivo e reinicie o Apache:

# /sbin/service httpd restart

E pronto! Seu sistema operacional e seu PHP estão trabalhando com o horário de verão corretos.

Página anterior    

Páginas do artigo
   1. Detectando o problema e descobrindo o motivo
   2. Configurando e solucionando o problema.
Outros artigos deste autor

Conectividade Social vs. proxy Squid transparente

Leitura recomendada

Criando Virtual Host no Apache: simples assim

Tags automáticas em URLs com a classe urlmatch da PHP

Criando gráficos com a classe JPGraph (parte 2)

Como programar com OOP em PHP, uma classe simples

Inteligência Artificial com PHP e MySQL (parte I)

  
Comentários
[1] Comentário enviado por gabrielvivian em 05/11/2007 - 11:32h

Buenas!
Tenho slackware 10.2
nao deu certo o comando
pcl install timezonedb
tem alguma ideia? de como posso fazer

[2] Comentário enviado por silvioadl em 08/11/2007 - 12:21h

Muito bom cara!

[3] Comentário enviado por marlichsi em 09/11/2007 - 23:44h

Gabriel,

Não sei se isso funciona no Slackware, mas, se funcionar, dá uma verificada na sintaxe dos comandos que eu postei no artigo com a sintaxe dos comandos que você tá executando.

Acho que tem erro de digitação por aí.

[4] Comentário enviado por mrlnw em 18/11/2008 - 17:15h

Cara..
no slack baixa o timezonedb-algumacoisa.tgz descompacta ele e compila manualmente q vai..

phpize
./configure
make
make install

ao menos o meu compilou.. mais não resolveu em nada não.. o horario do php continua errado.. acho que vou ter eh q mudar o sao paulo lá e colocar uma cidade mais pro nordeste mesmo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts